package cn.edu.nwpu.warehousemanagement.controller;

import cn.edu.nwpu.warehousemanagement.pojo.Result;
import cn.edu.nwpu.warehousemanagement.pojo.Shelf;
import cn.edu.nwpu.warehousemanagement.service.ShelfService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author ljl
 * 货架（Shelf）模块的控制器，提供增删改查接口
 * 所有接口前缀为：/api/shelf
 */
@RestController
@RequestMapping("api/shelf")
public class ShelfController {

    @Resource
    private ShelfService shelfService;

    /**
     * 创建新的货架
     *
     * @param shelf 要创建的货架对象，包含名称、位置、容量等字段
     * @return 创建成功后的货架对象（带数据库ID）
     */
    @PostMapping("/create")
    public Result<?> create(@RequestBody Shelf shelf) {
        return shelfService.createShelf(shelf);
    }

    /**
     * 根据货架ID更新货架信息
     *
     * @param shelf 含有更新内容的货架对象，必须包含有效的 ID
     * @return 更新后的货架对象
     */
    @PostMapping("/update/byId")
    public Result<String> update(@RequestBody Shelf shelf) {
        return shelfService.updateShelf(shelf);
    }

    /**
     * 根据ID软删除货架（将 deleted 字段设为 true）
     *
     * @param id 货架的主键ID
     * @return 操作结果
     */
    @PostMapping("/delete/byId")
    public Result<?> delete(@RequestBody Long id) {
        return shelfService.deleteShelf(id);
    }

    /**
     * 根据ID获取单个货架信息
     *
     * @param id 货架的主键ID
     * @return 对应的货架对象
     */
    @PostMapping("/get/byId")
    public Result<Shelf> get(@RequestBody Long id) {
        return shelfService.getShelfById(id);
    }

    /**
     * 获取所有未删除的货架列表
     *
     * @return 所有货架对象的列表
     */
    @GetMapping("/shelf-list")
    public Result<List<Shelf>> list() {
        return shelfService.getAllShelves();
    }
}
